package com.woniuxy.cloud.userassembly.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.woniuxy.cloud.entity.TUserCoupon;
import com.woniuxy.cloud.form.AddCouponForm;
import com.woniuxy.cloud.userassembly.mapper.TUserCouponMapper;
import com.woniuxy.cloud.userassembly.service.ITUserCouponService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 用户优惠券表 服务实现类
 * </p>
 *
 * @author Lucas
 * @since 2021-09-28
 */
@Service
public class TUserCouponServiceImpl extends ServiceImpl<TUserCouponMapper, TUserCoupon> implements ITUserCouponService {

    /**
     * 新增优惠劵
     * @param addCouponForm
     * @return
     */
    @Override
    public Integer addUserCoupon(AddCouponForm addCouponForm) {
        QueryWrapper<TUserCoupon> wrapper = new QueryWrapper<>();
        wrapper.eq("user_coupon_user_id",addCouponForm.getUserId()).eq("user_coupon_coupon_id",addCouponForm.getCouponId());
        TUserCoupon userCoupon1 = getBaseMapper().selectOne(wrapper);
        if(null!=userCoupon1){
            UpdateWrapper<TUserCoupon> updateWrapper = new UpdateWrapper<>();
            updateWrapper.eq("user_coupon_user_id",addCouponForm.getUserId()).eq("user_coupon_coupon_id",addCouponForm.getCouponId()).set("user_coupon_num",userCoupon1.getUserCouponNum()+addCouponForm.getNumber());
            return getBaseMapper().update(null,updateWrapper);
        }
        TUserCoupon tUserCoupon = new TUserCoupon();
        tUserCoupon.setUserCouponUserId(addCouponForm.getUserId()).setUserCouponCouponId(addCouponForm.getCouponId()).setUserCouponNum(addCouponForm.getNumber());
        return getBaseMapper().insert(tUserCoupon);
    }


    /**
     * 查询用户所有优惠劵
     * @param userId
     * @return
     */
    @Override
    public List<TUserCoupon> getUserCouponListByUserId(Integer userId){
        QueryWrapper<TUserCoupon> wrapper = new QueryWrapper<>();
        wrapper.eq("user_coupon_user_id",userId);
        return getBaseMapper().selectList(wrapper);
    }

    @Override
    public Boolean updateUserCouponNumByUserCouponId(Integer userCouponId, Integer num) {
        //通过JWT 获取userId
        Integer userId = 1;

//        QueryWrapper<TUserCoupon> tUserCouponQueryWrapper = new QueryWrapper<>();
//        tUserCouponQueryWrapper.eq("user_coupon_user_id",userId);
//        tUserCouponQueryWrapper.eq("user_coupon_coupon_id",userCouponId);
//        List<TUserCoupon> tUserCoupons = getBaseMapper().selectList(tUserCouponQueryWrapper);
//        TUserCoupon tUserCoupon = tUserCoupons.get(0);
        TUserCoupon tUserCoupon = getBaseMapper().selectById(userCouponId);
        if(tUserCoupon.getUserCouponNum()>=num){
            tUserCoupon.setUserCouponNum(tUserCoupon.getUserCouponNum()-num);
        }
        int i = getBaseMapper().updateById(tUserCoupon);
        return i==1;
    }

    @Override
    public TUserCoupon getUserCouponById(Integer id) {
        TUserCoupon tUserCoupon = getBaseMapper().selectById(id);
        return tUserCoupon;
    }
}
